SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE  Procedure [dbo].[SP_TCMOVI_CAJA_D04]          
/*-------------------------------------------------------*/          
/*---Empresa              : OFISIS S.A.                --*/          
/*---Cliente              : OFISIS                 --*/          
/*---Sistema              : Tesoreria                  --*/          
/*---Mödulo               : Empresa                    --*/          
/*---Programa             : Anulaci÷n (Todo Comprobante--*/          
/*---                       Movimiento Caja            --*/          
/*---                       (Egresos) (Detall.Doc.)    --*/            
/*---Script               : tcmovi_b.sql               --*/          
/*---Nombre SP            : SP_TCMOVI_CAJA_D04         --*/          
/*---Desarrollado por     : Javier Flores A.           --*/          
/*---Fecha Creaciön       : 04/07/1999                 --*/          
/*---Base Datos           : Microsoft Sql Server       --*/          
/*---Versiön              : 7.0                        --*/          
/*---Invoca a SP          :                            --*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*---ModIficado 1 por     :Maribel Julca Rodriguez     --*/          
/*---Fecha ModIficaci,n   :22/01/2005                  --*/           
/*---Detalle ModIficaci,n :ingreso de campos CO_USUA_CREA, CO_USUA_MODI --*/          
/*-------------------------------------------------------*/          
/*-------------------------------------------------------*/          
/*---Comentarios                                       --*/          
/*---                                                  --*/          
/*---                                                  --*/          
/*-------------------------------------------------------*/          
          
/*-------------------------------------------------------*/          
/*---Drop Proc SP_TCMOVI_CAJA_D04                      --*/          
/*---Grant all on SP_TCMOVI_CAJA_D04 to public         --*/           
/*---SP_TCMOVI_CAJA_D04                                --*/          
/*-------------------------------------------------------*/          
 @ISCO_EMPR TD_VC_002,           
 @ISCO_USUA_MODI TD_VC_008_USUA,          
 @ISCO_CAJA TD_VC_008,           
 @ISAA_CAJA TD_VC_004,           
 @ISMM_CAJA TD_VC_002,           
 @ISTI_MOVI TD_VC_001,            
 @ISNU_COMP_CAJA TD_VC_008,           
 @INIM_MOVI TD_NU_016_004,          
 @ISCO_TIPO_OPER TD_VC_003,          
 @IDFE_ANUL TD_DT_001,          
 @ISDE_OBSE TD_VC_100,          
 @ISNU_SOLI TD_VC_010          
 as          
            
 Declare               
    @VNIM_MOVI_ANTE TD_NU_016_004,            
    @OSTI_DOCU      TD_VC_003,           
    @CSTI_DOCU_ENTI TD_VC_003,           
    @CSNU_DOCU_ENTI TD_VC_020,            
    @CNNU_SECU_PRPA TD_IN_001,          
    @CNIM_CONV_DOCU TD_NU_016_004,           
    @VSST_SIGN      TD_VC_001,          
    @CNIM_DETA      TD_NU_016_004,          
    @CSTI_ENTI      TD_VC_001,          
    @CSCO_ENTI      TD_VC_020,          
    @VSCO_TIPO_EGAN TD_VC_003,             
    @VSST_GEAS_ANUL TD_VC_001,          
    @VSCO_TIPO_OPE1 TD_VC_003,          
    @OSTI_DOCU_RETE TD_VC_003, @CSST_CIER_DOCU TD_VC_001,         
    @CSCO_CNTA_EMPR TD_VC_010, @VNIM_CONV_DOCU TD_NU_016_004,         
    @VSST_APRO_CXPA TD_VC_001, @VSCO_ESTA_ANTE TD_VC_003,      
       
 /* a) Variables de extorno */      
 @VSCO_UNID_CONC TD_VC_003,  --YA    
 @VDFE_OPER  TD_DT_001,      --YA    
 @OSNU_ASTO  TD_VC_010,      --YA    
 @VSCO_TIPO_INAN TD_VC_003,      
 @VSST_INTE_BACH TD_VC_001,  --YA    
 @VSST_ASTO_RESU TD_VC_001,  --YA    
 @VSTI_OPNI_CARG TD_VC_001,  --YA    
 @VSTI_OPNI_ABON TD_VC_001   --YA    
          
 /* Devuelve el Tipo Documento */          
 Exec SP_TTDOCU_CNTB_Q01 6, @OSTI_DOCU OUTPUT           
 Exec SP_TTDOCU_CNTB_Q01 21, @OSTI_DOCU_RETE OUTPUT          
             
 SELECT @VSST_APRO_CXPA = ST_APRO_CXPA, @VSST_INTE_BACH = ST_INTE_BACH,      
 @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER    
 FROM   TMPARA_TESO      
 WHERE  CO_EMPR = @ISCO_EMPR      
    
/* jose luis */    
 Select @VDFE_OPER = FE_OPER,      
    @VSCO_UNID_CONC = CO_UNID_CONC      
  From   TCMOVI_CAJA          
  Where  CO_EMPR = @ISCO_EMPR          
       And    CO_CAJA = @ISCO_CAJA          
       And    AA_CAJA = @ISAA_CAJA          
       And    MM_CAJA = @ISMM_CAJA          
       And    TI_MOVI = @ISTI_MOVI          
       And    NU_COMP_CAJA = @ISNU_COMP_CAJA            
/*  */          
 Begin Tran SP_TCMOVI_CAJA_D04          
          
Declare CU_TCMOVI_CAJA_D04_1 Cursor          
     For          
     Select TI_ENTI, CO_ENTI, TI_DOCU_ENTI, NU_DOCU_ENTI, IM_CONV_DOCU, IM_DETA, RTRIM(ISNULL(CO_CNTA_EMPR, '')), NU_SECU_PRPA,        
   ST_CIER_DOCU        
     From   TDMOVI_CAJA          
     Where  CO_EMPR = @ISCO_EMPR          
     And    CO_CAJA = @ISCO_CAJA          
     And    AA_CAJA = @ISAA_CAJA          
     And    MM_CAJA = @ISMM_CAJA          
     And    TI_MOVI = @ISTI_MOVI          
     And    NU_COMP_CAJA = @ISNU_COMP_CAJA          
          
  Open CU_TCMOVI_CAJA_D04_1          
  Fetch CU_TCMOVI_CAJA_D04_1 into @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @CNIM_CONV_DOCU,           
                 @CNIM_DETA, @CSCO_CNTA_EMPR, @CNNU_SECU_PRPA, @CSST_CIER_DOCU          
          
     While (@@FETCH_STATUS = 0)          
    Begin          
  If (@@FETCH_STATUS < 0)          
    Begin          
   RAISERROR 20001 'FIN DE ARCHIVO'          
   Close CU_TCMOVI_CAJA_D04_1          
   Deallocate CU_TCMOVI_CAJA_D04_1          
   Rollback tran SP_TCMOVI_CAJA_D04        
    Return          
    End          
          
  If @CSCO_CNTA_EMPR = ''        
    Begin        
   -- Seteo de variable para el procedure que actualiza el documento        
   Select @VNIM_CONV_DOCU = @CNIM_CONV_DOCU * -1        
        
  -- Se busca el estado anterior del documento        
     Exec SP_TTESTA_ORIG_Q01 @ISCO_EMPR, @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @VSCO_ESTA_ANTE output        
        
         If @CSTI_ENTI = 'P' And @CSTI_DOCU_ENTI = @OSTI_DOCU_RETE        
           Begin        
   Update TMDOCU_PROV         
   Set IM_PAGA = Isnull(IM_PAGA,0) - Round(@CNIM_CONV_DOCU,2), CO_ESTA_DOCU = 'ANU',        
   FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI        
   Where CO_EMPR = @ISCO_EMPR         
   And   CO_PROV = @CSCO_ENTI         
   And   CO_TIPO_DOCU = @CSTI_DOCU_ENTI         
   And   NU_DOCU_PROV = @CSNU_DOCU_ENTI        
           
   If @@error <> 0        
     Begin         
    Close CU_TCMOVI_CAJA_D04_1        
    Deallocate CU_TCMOVI_CAJA_D04_1        
    Rollback Tran SP_TCMOVI_CAJA_D04        
    Return          
     End        
           
   Update TCCOMP_RETE        
   Set TI_SITU = 'ANU',        
   FE_USUA_MODI = Getdate(), CO_USUA_MODI = @ISCO_USUA_MODI        
   Where CO_EMPR = @ISCO_EMPR         
   And   NU_COMP_RETE = @CSNU_DOCU_ENTI        
           
   If @@error <> 0        
     Begin         
    Close CU_TCMOVI_CAJA_D04_1        
    Deallocate CU_TCMOVI_CAJA_D04_1        
    Rollback Tran SP_TCMOVI_CAJA_D04        
    Return          
     End        
           End        
          Else        
           Begin        
     --Se actualiza el documento y se graba en tabla de kardex de estados de documentos        
     Exec SP_TTACTU_PAGO_Q01 @ISCO_EMPR, @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI,         
         @VNIM_CONV_DOCU, @VSCO_ESTA_ANTE, @ISCO_USUA_MODI, @CSST_CIER_DOCU        
     If @@error <> 0        
             Begin         
               Close CU_TCMOVI_CAJA_D04_1        
           Deallocate CU_TCMOVI_CAJA_D04_1        
               Rollback Tran SP_TCMOVI_CAJA_D04        
               Return          
             End        
                 
           End        
        
  End          
          
       Fetch CU_TCMOVI_CAJA_D04_1 into @CSTI_ENTI, @CSCO_ENTI, @CSTI_DOCU_ENTI, @CSNU_DOCU_ENTI, @CNIM_CONV_DOCU,           
                                          @CNIM_DETA, @CSCO_CNTA_EMPR, @CNNU_SECU_PRPA, @CSST_CIER_DOCU         
          
      End          
          
      Close CU_TCMOVI_CAJA_D04_1          
      Deallocate CU_TCMOVI_CAJA_D04_1          
    
    
          
      /* Actualizando la Tabla de Solicitudes a Caja a Situaci©n APROBADAS */          
          
   Update TMSOLI_CABA          
      Set TI_SITU = 'APR', FE_LIQU = NULL,           
          CO_USUA_MODI = @ISCO_USUA_MODI, FE_USUA_MODI = getdate()                   
      Where CO_EMPR = @ISCO_EMPR          
      And   NU_SOLI = @ISNU_SOLI          
          
      If @@error <> 0          
         Begin          
           Rollback tran SP_TCMOVI_CAJA_D04        
     Return          
         End            
          
      SELECT @VSCO_TIPO_EGAN = CO_TIPO_OPEG, @VSST_GEAS_ANUL = ST_GEAS_ANUL          
      FROM   TMPARA_TESO           
      WHERE  CO_EMPR = @ISCO_EMPR          
          
      If @VSST_GEAS_ANUL = 'N'          
         Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_EGAN          
      Else              
         Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER      
    
-- Si la Fecha de Anulacion es Mayor --E X T O R N O--  --     
    If  @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )         
      Update  TCMOVI_CAJA          
      Set     TI_SITU = 'EXT',           
              CO_TIPO_OPER = @VSCO_TIPO_OPE1,          
              DE_OBSE = @ISDE_OBSE,          
              CO_USUA_MODI = @ISCO_USUA_MODI,          
              FE_USUA_MODI = GETDATE()          
      Where   CO_EMPR = @ISCO_EMPR            
      And     CO_CAJA = @ISCO_CAJA          
      And     AA_CAJA = @ISAA_CAJA          
      And     MM_CAJA = @ISMM_CAJA         
      And     TI_MOVI = @ISTI_MOVI          
      And     NU_COMP_CAJA = @ISNU_COMP_CAJA        
          
   Else    
      Update  TCMOVI_CAJA          
      Set     TI_SITU = 'ANU',           
              CO_TIPO_OPER = @VSCO_TIPO_OPE1,          
              DE_OBSE = @ISDE_OBSE,          
              CO_USUA_MODI = @ISCO_USUA_MODI,          
              FE_USUA_MODI = GETDATE()          
      Where   CO_EMPR = @ISCO_EMPR            
      And     CO_CAJA = @ISCO_CAJA          
      And     AA_CAJA = @ISAA_CAJA          
      And     MM_CAJA = @ISMM_CAJA         
      And     TI_MOVI = @ISTI_MOVI          
      And     NU_COMP_CAJA = @ISNU_COMP_CAJA          
          
      If @@error <> 0          
         Begin          
           Rollback Tran SP_TCMOVI_CAJA_D04        
           Return          
         End      
     
  
/**-----Verifica si se genera asientos Resumidos ------*/       
 Select @VSST_ASTO_RESU = Max(IsNull( t1.ST_ASTO_RESU, 'S'))            
 From   TMOPRC_RESU t1 , TDTIPO_OPER t2            
 Where  t2.CO_EMPR = @ISCO_EMPR And            
 t2.CO_TIPO_OPER = @ISCO_TIPO_OPER And            
 t1.CO_EMPR = t2.CO_EMPR And            
 t1.CO_OPRC_CNTB = t2.CO_OPRC_CNTB       
    
/**-----Fin de la Validacion de Asientos Resumidos e Interfase en Bach ------*/       
 If @VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND       
    @ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON And      
    @VDFE_OPER < @IDFE_ANUL And Month( @VDFE_OPER ) != Month( @IDFE_ANUL )      
 Begin      
/*-----Optiene el Numero de Asiento -----*/          
   EXEC SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @VSCO_UNID_CONC, @VSCO_TIPO_OPE1, @IDFE_ANUL, @OSNU_ASTO OUTPUT        
   IF (@@ERROR != 0)            
   Begin        
     RollBack Tran  SP_TTAMAR_NCCA_D01      
     Return        
   End       
    
 End            
/**/         
          
      Insert into TTCAJA_ANUL (CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA,          
      CO_TIPO_OPER, FE_ANUL, NU_ASTO, ST_CONT, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)          
      Values (@ISCO_EMPR, @ISCO_CAJA, @ISAA_CAJA, @ISMM_CAJA, @ISTI_MOVI, @ISNU_COMP_CAJA,          
              @VSCO_TIPO_OPE1,  @IDFE_ANUL, @OSNU_ASTO, 'N', @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE())          
          
      If @@error <> 0          
         Begin          
           Rollback tran SP_TCMOVI_CAJA_D04         
      Return          
         End          
          
          
commit tran SP_TCMOVI_CAJA_D04         
          
/*------------------------ Fin ------------------------------*/


GO
